//package com.zlp.enums;
//
//import com.volvo.oem.mall.manage.api.exception.ServiceException;
//import com.volvo.oem.mall.manage.api.model.supplier.CardPropertyVO;
//import com.volvo.oem.mall.manage.config.LhSupplierProperties;
//import com.volvo.oem.mall.manage.config.YsSupplierProperties;
//import com.volvo.oem.mall.manage.dao.model.SupplierCardDO;
//import com.volvo.oem.mall.manage.util.AesEncrypt;
//import com.volvo.oem.mall.manage.util.SupplierConstant;
//import lombok.AllArgsConstructor;
//import lombok.Getter;
//import org.apache.commons.lang3.StringUtils;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Objects;
//
///**
// * 供应商类型
// *
// * @author ZouLiPing
// * @date 2022/8/17 10:27
// */
//@Getter
//@AllArgsConstructor
//public enum SupplierType2Enum {
//
//    NON("非供应商商品", 1000, null),
//    LI_HAN("力翰", 2000,
//            (SupplierCardDO supplierCardDO, Integer index, YsSupplierProperties ysSupplierProperties, LhSupplierProperties lhSupplierProperties) -> {
//                List<CardPropertyVO> properties = new ArrayList<>();
//                // 卡号
//                if (StringUtils.isNotBlank(supplierCardDO.getCardNumber())) {
//                    CardPropertyVO cardPropertyVO = new CardPropertyVO();
//                    cardPropertyVO.setName(SupplierConstant.CARD_NO + index);
//                    cardPropertyVO.setValue(AesEncrypt.decrypt(supplierCardDO.getCardNumber(), ysSupplierProperties.getAppSecret()));
//                    addCardProperty(properties, supplierCardDO.getExpiresDate(), cardPropertyVO);
//                }
//                // 卡密
//                if (StringUtils.isNotBlank(supplierCardDO.getCardPassword())) {
//                    CardPropertyVO cardPropertyVO = new CardPropertyVO();
//                    cardPropertyVO.setName(SupplierConstant.CARD_SECRET + index);
//                    cardPropertyVO.setValue(AesEncrypt.decrypt(supplierCardDO.getCardPassword(), ysSupplierProperties.getAppSecret()));
//                    addCardProperty(properties, supplierCardDO.getExpiresDate(), cardPropertyVO);
//                }
//                return properties;
//            }),
//    YUNSHENG_FUTURE("云生未来", 3000,
//            (SupplierCardDO supplierCardDO, Integer index, YsSupplierProperties ysSupplierProperties, LhSupplierProperties lhSupplierProperties) -> {
//                List<CardPropertyVO> properties = new ArrayList<>();
//                // 卡号
//                if (StringUtils.isNotBlank(supplierCardDO.getCardNumber())) {
//                    CardPropertyVO cardPropertyVO = new CardPropertyVO();
//                    cardPropertyVO.setName(SupplierConstant.CARD_NO + index);
//                    cardPropertyVO.setValue(AesEncrypt.decrypt(supplierCardDO.getCardNumber(), lhSupplierProperties.getAppSecret()));
//                    addCardProperty(properties, supplierCardDO.getExpiresDate(), cardPropertyVO);
//                }
//                // 卡密
//                if (StringUtils.isNotBlank(supplierCardDO.getCardPassword())) {
//                    CardPropertyVO cardPropertyVO = new CardPropertyVO();
//                    cardPropertyVO.setName(SupplierConstant.CARD_SECRET + index);
//                    cardPropertyVO.setValue(AesEncrypt.decrypt(supplierCardDO.getCardPassword(), lhSupplierProperties.getAppSecret()));
//                    addCardProperty(properties, supplierCardDO.getExpiresDate(), cardPropertyVO);
//                }
//                // 链接
//                if (StringUtils.isNotBlank(supplierCardDO.getCardLink())) {
//                    CardPropertyVO cardPropertyVO = new CardPropertyVO();
//                    cardPropertyVO.setName(SupplierConstant.CARD_LINK + index);
//                    cardPropertyVO.setValue(AesEncrypt.decrypt(supplierCardDO.getCardLink(), lhSupplierProperties.getAppSecret()));
//                    addCardProperty(properties, supplierCardDO.getExpiresDate(), cardPropertyVO);
//                }
//                // 兑换地址
//                if (StringUtils.isNotBlank(supplierCardDO.getExchangeUrl())) {
//                    CardPropertyVO cardPropertyVO = new CardPropertyVO();
//                    cardPropertyVO.setName(SupplierConstant.EXCHANGE_URL + index);
//                    cardPropertyVO.setValue(AesEncrypt.decrypt(supplierCardDO.getExchangeUrl(), lhSupplierProperties.getAppSecret()));
//                    addCardProperty(properties, supplierCardDO.getExpiresDate(), cardPropertyVO);
//                }
//                return properties;
//            });
//
//
//    private String name;
//    private Integer code;
//    private final ConvertCardPropertyFunction convertCardPropertyFunction;
//
//
//    public static String getByCode(Integer code) {
//
//        for (SupplierTypeEnum resultCode : SupplierTypeEnum.values()) {
//            if (Objects.equals(code, resultCode.getCode())) {
//                return resultCode.getName();
//            }
//        }
//        return null;
//    }
//
//    public static Integer getByName(String name) {
//        for (SupplierTypeEnum resultName : SupplierTypeEnum.values()) {
//            if (Objects.equals(name, resultName.getName())) {
//                return resultName.getCode();
//            }
//        }
//        return null;
//    }
//
//    /**
//     * 枚举转化供应商卡号卡密
//     */
//    public static List<CardPropertyVO> convertCardProperty(
//            Integer code,
//            SupplierCardDO supplierCardDO,
//            Integer index,
//            YsSupplierProperties ysSupplierProperties,
//            LhSupplierProperties lhSupplierProperties) {
//
//        for (SupplierTypeEnum supplierTypeEnum : SupplierTypeEnum.values()) {
//            if (Objects.equals(code, supplierTypeEnum.getCode())) {
//                return supplierTypeEnum.getConvertCardPropertyFunction().proceed(supplierCardDO, index, ysSupplierProperties, lhSupplierProperties);
//
//            }
//        }
//        throw new ServiceException(SupplierConstant.ENUM_CONVERT_SUPPLIER_ERROR);
//
//    }
//
//
//    /**
//     * 添加卡号卡密
//     *
//     * @author ZouLiPing
//     * @date 2022/10/18 10:17
//     */
//    private static void addCardProperty(List<CardPropertyVO> properties, String expiresDate, CardPropertyVO cardPropertyVO) {
//        cardPropertyVO.setExpiresDate(expiresDate);
//        properties.add(cardPropertyVO);
//    }
//
//    @FunctionalInterface
//    public interface ConvertCardPropertyFunction {
//        List<CardPropertyVO> proceed(SupplierCardDO supplierCardDO,
//                                     Integer index,
//                                     YsSupplierProperties ysSupplierProperties,
//                                     LhSupplierProperties lhSupplierProperties
//        );
//    }
//}